-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
update stripe sdk and webhooks to match #427
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@@ -24,7 +24,7 @@ | |||
"react-hot-toast": "^2.4.1", | |||
"react-icons": "4.11.0", | |||
"react-router-dom": "^6.26.2", | |||
"stripe": "11.15.0", | |||
"stripe": "^18.1.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
according to new stripe update policy, this will avoid breaking changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what this means, can you elaborate?
// We do this so that we can capture priceId in the payment_intent.succeeded webhook | ||
// and easily confirm the user's payment based on the price id. For subscriptions, we can get the price id | ||
// in the customer.subscription.updated webhook via the line_items field. | ||
payment_intent_data: paymentIntentData, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we're no longer dealing with payment intents to handle one-time payment products. these are now just getting handled directly in checkout.session.completed.
@@ -32,8 +32,8 @@ export const stripeWebhook: PaymentsWebhook = async (request, response, context) | |||
case 'invoice.paid': | |||
await handleInvoicePaid(data, prismaUserDelegate); | |||
break; | |||
case 'payment_intent.succeeded': | |||
await handlePaymentIntentSucceeded(data, prismaUserDelegate); | |||
case 'customer.subscription.created': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
subscription created events used to be sent in customer.subscription.updated events, but they stopped that , so to handle new subscriptions we need this event.
export async function handleInvoicePaid(invoice: InvoicePaidData, prismaUserDelegate: PrismaClient['user']) { | ||
const userStripeId = invoice.customer; | ||
const datePaid = new Date(invoice.period_start * 1000); | ||
return updateUserStripePaymentDetails({ userStripeId, datePaid }, prismaUserDelegate); | ||
const lineItems = await invoiceLineItemsSchema.parseAsync(invoice.lines); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if this is needed, because we can be certain that stripe is going to send us the correct format, right?
I'll take a look tomorrow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I started reviewing, but got a little confused by the context.
The PR description mentions it closes #229 #198 #293 #412. I went through those issues but couldn't figure out how most of the code in this PR relates to them.
@vincanger is there another issue that this PR addresses? Could you comment on the unexpected code and explain how they relate to those issues, and mention the issue they relate to.
As an example, I understand why the stripe version bump is in this PR, but I don't understand what's happening with the Pending status and the stuff in extractPriceId
.
<br/>- `customer.subscription.updated` | ||
<br/>- `invoice.paid` | ||
<br/>- `payment_intent.succeeded` | ||
4. select the events you want to listen to. These should be the same events you're consuming in your webhook which you can find listed in `src/payment/stripe/webhookPayload.ts`: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we link to the file on Github (no permalink, just link to main).
That way, if the file name becomes outdated, the mistake will be easy to spot.
@@ -24,7 +24,7 @@ | |||
"react-hot-toast": "^2.4.1", | |||
"react-icons": "4.11.0", | |||
"react-router-dom": "^6.26.2", | |||
"stripe": "11.15.0", | |||
"stripe": "^18.1.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what this means, can you elaborate?
@@ -5,6 +5,7 @@ export enum SubscriptionStatus { | |||
CancelAtPeriodEnd = 'cancel_at_period_end', | |||
Active = 'active', | |||
Deleted = 'deleted', | |||
Pending = 'pending', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How come we added this?
Description
fixes #229 #198 #293 #412
Contributor Checklist